package main

import "fmt"

//先定义接口,一般以er结尾，根据接口实现功能
type Jiekouer interface {
	sahai()
}

type fuleixuesheng struct {
	name    string
	age     int
	uuid    int
	chengji int
}

func (x *fuleixuesheng) sahai() {
	fmt.Println(x.name, x.age, x.uuid, x.chengji)
}

type zileilaoshi struct {
	name string
	age  int
	uuid int
}

func (l *zileilaoshi) selaos() {
	fmt.Println(l.age, l.name, l.uuid)

}
func main() {
	//接口是一种数据类型，可以接收满足对象的信息
	//接口是虚的，方法是实的
	//接口定义规则，方法实现规则
	//接口定义的规则，在方法中必须有定义的实现
	xue := fuleixuesheng{"小柠檬", 18, 1, 100}
	xue.sahai()
	lao := zileilaoshi{"王德发", 30, 01}
	lao.selaos()
	var h Jiekouer
	//将对象信息赋值给接口类型变量
	h = &xue
	h.sahai()
	//将对象赋值给接口，必须满足接口中的方法的声明格式，不能空穴来风

}
